package entidades;

import util.Util;
import util.exceptions.NaoExistemPeersSuficientesParaSeFazerTroca;
import entidades.politica.PoliticaSelecaoBlocos;
import entidades.politica.PoliticaSelecaoVizinhos;

public class Publisher {
	
	public static final double taxa = Util.U;
	
	private PoliticaSelecaoVizinhos politicaSelecaoVizinhos;
	private PoliticaSelecaoBlocos politicaSelecaoBlocos;
	
	public Publisher(PoliticaSelecaoVizinhos politicaSelecaoVizinhos, PoliticaSelecaoBlocos politicaSelecaoBlocos) {
		this.politicaSelecaoVizinhos = politicaSelecaoVizinhos;
		this.politicaSelecaoBlocos = politicaSelecaoBlocos;
	}
	
	public Peer selecionaPeer() throws NaoExistemPeersSuficientesParaSeFazerTroca {
		return politicaSelecaoVizinhos.seleciona();
	}
	
	public int selecionaBloco(Peer peerDestino) {
		return politicaSelecaoBlocos.seleciona(peerDestino);
	}
}
